package com.cmc.cloud.cmclink.doc.service;

import java.util.List;

import javax.validation.Valid;

import com.cmc.cloud.cmclink.doc.entity.AttachmentTypeDO;
import com.cmc.cloud.cmclink.doc.vo.attachmenttypevo.AttachmentTypeCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.attachmenttypevo.AttachmentTypePageReqVO;
import com.cmc.cloud.cmclink.doc.vo.attachmenttypevo.AttachmentTypeUpdateReqVO;
import com.cmes.framework.common.pojo.PageResult;

/**
 * 附件类型 Service 接口
 *
 * @author 招商轮船-管理员
 */
public interface AttachmentTypeService {

    /**
     * 创建附件类型
     *
     * @param createReqVO 创建信息
     */
    void createAttachmentType(@Valid AttachmentTypeCreateReqVO createReqVO);

    /**
     * 更新附件类型
     *
     * @param updateReqVO 更新信息
     */
    void updateAttachmentType(@Valid AttachmentTypeUpdateReqVO updateReqVO);

    /**
     * 更新附件类型验证
     *
     * @param updateReqVO 更新信息
     * @return boolean
     */
    Boolean updateValidAttachmentType(@Valid AttachmentTypeUpdateReqVO updateReqVO);

    /**
     * 删除附件类型
     *
     * @param id 编号
     */
    void deleteAttachmentType(Long id);

    /**
     * 获得附件类型
     *
     * @param id 编号
     * @return 附件类型
     */
    AttachmentTypeDO getAttachmentType(Long id);

    /**
     * 获得附件类型列表
     *
     * @param keyWord 关键词
     * @return 附件类型列表
     */
    List<AttachmentTypeDO> getAttachmentTypeList(String keyWord);

    /**
     * 获得特种货附件类型列表
     * 
     * @param keyWord 关键词
     * @return AttachmentTypeDO
     */
    List<AttachmentTypeDO> getAttachmentTypeSpcList(String keyWord);

    /**
     * 获得附件类型分页
     *
     * @param pageReqVO 分页查询
     * @return 附件类型分页
     */
    PageResult<AttachmentTypeDO> getAttachmentTypePage(AttachmentTypePageReqVO pageReqVO);

    /**
     * 获得必填附件类型列表
     * 
     * @param applyType 申请类型
     * @return 必填附件类型列表
     */
    List<AttachmentTypeDO> getRequiredAttachList(String applyType);
}
